﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Capa_Negocio;
using System.Data;
using System.Data.Entity;
using Capa_Datos;
using System.Data.Objects;

namespace Capa_Negocio
{
    public class CicloCN
    {
        #region Operaciones de mantenimiento
        //Falta el metodo para la creacion y eliminacion de relaciones....
        public int Altaciclo(ciclo ociclo)
        {
            //hacemos nuestra conexion
            using (ProyectoCIFP oCon = new ProyectoCIFP())
            {// a la hora de hacer el alte tendremos que controlar que exite la familia dada en el alta
                oCon.AddTociclo(ociclo);
                return oCon.SaveChanges();
            }
        }
        public int Bajaciclo(ciclo ociclo)
        {
            using (ProyectoCIFP oCon = new ProyectoCIFP())
            {// No se podran borrar un ciclo que haya hecho un pedidio, campo para ver si esta activo ?
                ciclo borrar = (from c in oCon.ciclo where c.Id_ciclo == ociclo.Id_ciclo select c).First();
                oCon.DeleteObject(borrar);
                return oCon.SaveChanges();
            }
        }
        public int Modiciclo(ciclo ociclo)
        {
            using (ProyectoCIFP oCon = new ProyectoCIFP())
            {//igual que a la hora del alta tendremos que añadir una familia existente
                ciclo modificar = (from c in oCon.ciclo where c.Id_ciclo == ociclo.Id_ciclo select c).First();
                modificar.Nombre = ociclo.Nombre;
                modificar.Id_familia = ociclo.Id_familia;
                return oCon.SaveChanges();
            }
        }

        #endregion
        #region Operaciones de filtrado
        public List<ciclo> General(ciclo oCiclo)
        {
            using (ProyectoCIFP oCon = new ProyectoCIFP())
            {
                oCon.ContextOptions.LazyLoadingEnabled = false;
                IQueryable<ciclo> cilosid;
                IQueryable<ciclo> cilosidf;
                IQueryable<ciclo> cgeneral;
                IQueryable<ciclo> ciclosnombre;

                cgeneral = from c in oCon.ciclo select c;

                if (oCiclo.Id_ciclo != 0)
                {
                    cilosid =
                             from c in oCon.ciclo
                             where c.Id_ciclo == oCiclo.Id_ciclo
                             select c;
                    cgeneral = cgeneral.Intersect(cilosid);
                }
                if (oCiclo.Nombre != "")
                {
                    ciclosnombre =
                           from c in oCon.ciclo
                           where c.Nombre.Contains(oCiclo.Nombre)
                           select c;
                    cgeneral = cgeneral.Intersect(ciclosnombre);
                }
                if (oCiclo.Id_familia != 0)
                {
                    cilosidf =
                             from c in oCon.ciclo
                             where c.Id_familia == oCiclo.Id_familia
                             select c;
                    cgeneral = cgeneral.Intersect(cilosidf);
                }
                return cgeneral.ToList();
            }
        }
        #endregion 
        #region Procesos privados
        #endregion
    }
}
